-- to be compatible with aliyun redis, we cannot use `local key = KEYS[1]` to reuse the key
local max = tonumber(ARGV[1])
local expire = tonumber(ARGV[2])

-- 获取当前计数（处理key不存在情况）
local current = redis.call("GET", KEYS[1]) or 0
current = tonumber(current)

if current >= max then
    return 0  -- 超过限制
end

-- 增加计数
redis.call("INCR", KEYS[1])
if current == 0 then
    redis.call("EXPIRE", KEYS[1], expire)  -- 首次设置过期时间
end
return 1  -- 允许操作